package com.company.nowcoder;

import com.company.struct.MinStack;

import java.util.*;

/**
 * @author jrue
 * @description https://www.nowcoder.com/practice/37aa8a88a72e47f798a14d63bee61d8f?tpId=98&tqId=32851&rp=1&ru=/ta/2019test&qru=/ta/2019test/question-ranking
 * @date 2019/12/5 16:16
 * 有重量分别为3，5，7公斤的三种货物，和一个载重量为X公斤的箱子（不考虑体积等其它因素，只计算重量）
 * 需要向箱子内装满X公斤的货物，要求使用的货物个数尽可能少（三种货物数量无限）
 */
public class Shipment {

    static SortedMap<Integer,Integer> map = new TreeMap<>();
    static {
        map.put(3,1);
        map.put(5,1);
        map.put(7,1);
        map.put(8,2);
        map.put(10,2);
        map.put(12,2);
        map.put(15,3);
    }

    public static int sum(int n){
        int min = Integer.MAX_VALUE;
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if (n % entry.getKey() == 0) {
                min = Math.min(min,(n / entry.getKey()) * entry.getValue());
            } else {
                if (map.containsKey(n % entry.getKey())) {
                    min = Math.min(min,(n / entry.getKey()) * entry.getValue() + map.get(n % entry.getKey()));
                }
            }
        }
        return min;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        if (n == 1 || n <0 || n == 2 || n == 4){
            System.out.println(-1);
            return;
        }

        int min = Integer.MAX_VALUE;
        min = Math.min(min,sum(n));

        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if (n > entry.getKey()) {
                int k = sum(n - entry.getKey());
                if (Integer.MAX_VALUE != k){
                    min = Math.min(min,k + entry.getValue());
                }
            }
        }


        System.out.println(min == Integer.MAX_VALUE ? "-1" : min);

    }

}
